package com.bestcem.xm.user.service;

import com.bestcem.xm.common.core.domain.web.ServiceResult;
import com.bestcem.xm.user.service.dto.PageResponseDTO;
import com.bestcem.xm.user.service.dto.group.UserGroupImportRecordDTO;

import java.util.List;

/**
 * 层级组织导入service
 *
 * @author wangyunyun <yunyun.wang@idiaoyan.com>
 * @version v1.0
 * @date 2022/4/19 17:57
 */
public interface UserGroupImportRecordService {

    /**
     * 通过条件查询组织导入记录
     *
     * @param importRecordDTO 组织导入记录dto
     * @return ServiceResult<List < UserGroupImportRecordDTO>>
     * @author wangyunyun <yunyun.wang@idiaoyan.com>
     * @date 2022/4/20 10:01
     */
    ServiceResult<List<UserGroupImportRecordDTO>> findByCondition(UserGroupImportRecordDTO importRecordDTO);

    /**
     * 通过条件统计组织导入记录
     *
     * @param importRecordDTO 组织导入记录dto
     * @return ServiceResult<Long>
     * @author wangyunyun <yunyun.wang@idiaoyan.com>
     * @date 2022/4/20 10:25
     */
    ServiceResult<Long> countByCondition(UserGroupImportRecordDTO importRecordDTO);

    /**
     * 通过组织导入记录校验组织层级是否可导入
     *
     * @param orgId 公司id
     * @return ServiceResult<Boolean>
     * @author wangyunyun <yunyun.wang@idiaoyan.com>
     * @date 2022/4/20 10:13
     */
    ServiceResult<Boolean> checkImportActive(String orgId);

    /**
     * 新增组织导入记录
     *
     * @param importRecordDTO 组织导入记录dto
     * @return ServiceResult<String>
     * @author wangyunyun <yunyun.wang@idiaoyan.com>
     * @date 2022/4/20 13:57
     */
    ServiceResult<String> insert(UserGroupImportRecordDTO importRecordDTO);

    /**
     * 根据id和公司id更新组织导入记录
     *
     * @param importRecordDTO 组织导入记录dto(id和公司id必填)
     * @return ServiceResult<Integer>
     * @author wangyunyun <yunyun.wang@idiaoyan.com>
     * @date 2022/4/20 07:57
     */
    ServiceResult<Integer> updateByIdAndOrgId(UserGroupImportRecordDTO importRecordDTO);

    /**
     * 更新组织导入状态
     *
     * @param orgId    公司id
     * @param importId 组织导入记录id
     * @param status   组织导入记录状态
     * @return ServiceResult<Integer>
     * @author wangyunyun <yunyun.wang@idiaoyan.com>
     * @date 2022/4/20 07:55
     */
    ServiceResult<Integer> updateStatus(String orgId, String importId, Integer status);

    /**
     * 导入组织记录分页列表
     *
     * @param exportRecordDTO 组织导入记录dto
     * @param currentPage     当前页
     * @param pageSize        页条数
     * @return XmViewResultJson<PageResponseDTO < UserGroupExportRecordVO>>
     * @author wangyunyun <yunyun.wang@idiaoyan.com>
     * @date 2022/4/20 15:28
     */
    ServiceResult<PageResponseDTO<UserGroupImportRecordDTO>> listByPage(UserGroupImportRecordDTO exportRecordDTO, Integer currentPage, Integer pageSize);

    /**
     * 获取组织和层级更新的任务
     *
     * @param importId 导入记录id
     * @param orgId    公司id
     * @return ServiceResult<UserGroupImportRecordDTO>
     * @author wangyunyun <yunyun.wang@idiaoyan.com>
     * @date 2022/6/7 14:44
     */
    ServiceResult<UserGroupImportRecordDTO> getUpdateOpenGroupTreeTask(String importId, String orgId);
}
